package com.example.roleplay.service;

import com.example.roleplay.domain.SessionMemory;
import com.example.roleplay.domain.Skill;
import com.example.roleplay.dto.BatchSessionCreateRequest;
import com.example.roleplay.dto.BatchSessionCreateResponse;
import com.example.roleplay.dto.SessionCreateRequest;
import com.example.roleplay.dto.SessionCreateResponse;

import java.util.List;

/**
 * 会话管理服务接口
 */
public interface SessionService {

    /**
     * 创建新会话
     */
    SessionCreateResponse createSession(SessionCreateRequest request);

    /**
     * 批量创建会话（为所有主要角色创建会话）
     */
    BatchSessionCreateResponse createBatchSessions(BatchSessionCreateRequest request);

    /**
     * 获取会话记忆
     */
    SessionMemory getSessionMemory(String sessionId);

    /**
     * 更新会话记忆
     */
    void updateSessionMemory(String sessionId, String userMessage, String assistantMessage, 
                           SessionMemory.MessageType messageType, List<Skill> skillsUsed);

    /**
     * 结束会话
     */
    void endSession(String sessionId);

    /**
     * 清理过期会话
     */
    void cleanupExpiredSessions();

    /**
     * 检查会话是否存在且有效
     */
    boolean isSessionValid(String sessionId);

    /**
     * 更新会话活跃时间
     */
    void updateSessionActivity(String sessionId);

    /**
     * 清空会话记忆（保留会话但清空对话历史）
     */
    void clearSessionMemory(String sessionId);
}